package zeus.ejb;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import zeus.exception.EntidadeException;
import zeus.model.Quarto;
import zeus.model.TipoQuarto;
import zeus.service.EjbQuartoService;

@Stateless
public class EjbQuarto implements EjbQuartoService {
	
	@PersistenceContext
	EntityManager entityManager;
	
	public void CadastrarQuarto(Quarto quarto){
		if(quarto.getTipoQuarto().equals(TipoQuarto.QUARTO_SIMPLES)){
			quarto.setPreco(300);
		}else if(quarto.getTipoQuarto().equals(TipoQuarto.QUARTO_DUPLO)){
			quarto.setPreco(450);
		}else{
			quarto.setPreco(525);
		}
		
		entityManager.persist(quarto);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Quarto> listarQuartos() {
		List<Quarto> q = entityManager.createQuery("SELECT p FROM Quarto p").getResultList();
		return q;
	}
	
	public List<Quarto> ordernarPorTipo(TipoQuarto tipoQuarto){
		List<Quarto> quartosPorTipo = new ArrayList<Quarto>();
		
		for(Quarto q : this.listarQuartos()){
			if(q.getTipoQuarto().equals(tipoQuarto)){
				quartosPorTipo.add(q);
			}
		}
		
		return quartosPorTipo;
	}
	
	public boolean numeroJaExiste(int numero){
		String hql = "from Quarto q where q.numero="+numero;
		Query query = entityManager.createQuery(hql);
		
		try{
			Quarto q = (Quarto) query.getSingleResult();
			if(q == null){
				return false;
			}else{
				return true;
			}
		}catch (Exception e){
			return false;
		}
	}
	
	public Quarto buscarQuartoPorNumero(int numero) throws EntidadeException{
		String hql = "from Quarto q where q.numero="+numero;
		Query query = entityManager.createQuery(hql);
		
		try{
			Quarto q = (Quarto) query.getSingleResult();
			return q;
		}catch(Exception e){
			throw new EntidadeException();
		}
		
		
		
	}
	
	
	
	public void atualizar(Quarto q){
		entityManager.merge(q);
	}
	
	
}
